package Servlet.User;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Creche.Admin.Administrateur;
import Creche.Bd.BD;
import Creche.Donnees.Donnee;
import Creche.Donnees.Modification;
import Creche.Main.Creche;

/*
 * Ajout d'une donn�e � une creche
 */
@SuppressWarnings("serial")
public class Ajout extends HttpServlet {
	
	
	@SuppressWarnings("unused")
	public void doPost(HttpServletRequest req, HttpServletResponse resp){
		Creche aMod = (Creche) req.getSession().getAttribute("creche");
		Administrateur admin = (Administrateur) req.getSession().getAttribute("session");
		// nombre de donn�es r�ellement en bd + 1 donn�e
		int nbDonnees = aMod.getActu().size() + aMod.getSeulementDonnees().size();
		if (aMod!=null){
			BD myBase = new BD();
			String label = req.getParameter("label");
			String val = req.getParameter("valeur");
			if (!label.equals("") && !val.equals("")) {
				ArrayList<String> labelNonValide;
				Modification modif;
				Donnee ajout = new Donnee(label,val);
				// si l'utilisateur est admin, la donn�e devient valide
				if (admin != null && (admin.getStatut() || 
						admin.getVille().equals(aMod.getAdresse().getVille()))) {
					ajout.devientValide();
				} 
				if (aMod.notExistD(ajout)) {
					nbDonnees = aMod.getActu().size() + aMod.getSeulementDonnees().size() + 1;
					aMod.addDonnee(ajout);
				}
				// on va cr�er la modif qui en fait contiendra tout les labels de donn�es non valides
				labelNonValide = aMod.getDonneesNonValide();
				if(labelNonValide.size() == 0) {
					myBase.removeModif(aMod.getAdresse().getVille() + ":" + aMod.getNom());
				} else {
					modif = new Modification(aMod.getAdresse().getVille() + ":" + aMod.getNom(), 
								labelNonValide);
					myBase.estPersistent(modif);
				}
				// si toutes les donn�es sont valide on supprime la modif si elle existe
		        myBase.estPersistent(aMod);
			}
			//redirection vers la page de modif avant on va s'assurer que les modifs on eu le temps de s'�ffectuer
	        try {
	        	do {
	        		aMod = myBase.getCreche(aMod.getAdresse().getVille() + ":" +aMod.getNom());
	        	} while(aMod.getActu().size() + aMod.getSeulementDonnees().size() != nbDonnees ); 
				resp.sendRedirect("modifCreche.jsp?nom="+aMod.getNom()+"&ville="+aMod.getAdresse().getVille());
			} catch (IOException e) {
				
				e.printStackTrace();
			}
		} else {
			try {
				resp.sendRedirect("search.jsp");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
